package mws.metadataModel;

import cn.hutool.core.util.StrUtil;

import java.util.List;
import java.util.Objects;

public class HttpMetaData implements ServiceMeta {


    private String apiName;

    private String httpMethod;
    private String host = "localhost";
    private String port = "8080";
    private String route;
    private Description description;
    private List<ApiParameter> enterParameters;
    private List<ApiParameter> exitParameters;
/**
 * apiName: api名称
 * httpMethod: http
 * host: 主机名
 * port: 端口号
 * route: 路由 /api/{apiName}   注意要以开头
 * description: 描述
 *         {  （都是必填项）
 *             min: 最小值
 *             max: 最大值
 *             mark: 描述
 *             pattern: 正则表达式
 *             example: 示例值
 *
 *         }
 *
 * enterParameters: 入参
 * {// 假如入参和出餐是 结构体怎么办  结构体内嵌怎么办
 *     {// 这里默认  正常的一些输入结构  不允许 再给结构体  嵌套的结构体  只能用json 字符串表示
 *         name: 参数名
 *         type: 参数类型
 *         description: 参数描述
 *         {
 *             min: 最小值
 *             max: 最大值
 *             mark: 描述
 *             pattern: 正则表达式
 *             example: 示例值
 *         }
 *         defaultValue: 默认值
 *         required: 是否必填
 *     }
 *
 * }
 * exitParameters: 出参
 *{
 *     {
 *         name: 参数名
 *         type: 参数类型
 *         description: 参数描述
 *         {
 *             min: 最小值
 *             max: 最大值
 *             mark: 描述
 *             pattern: 正则表达式
 *             example: 示例值
 *         }
 *         defaultValue: 默认值
 *         required: 是否必填
 *     }
 *}
 *
 */


    @Override
    public void checkServiceMeta() {
        this.apiName = Objects.requireNonNull(apiName, "apiName不能为空");
        this.httpMethod = Objects.requireNonNull(httpMethod, "httpMethod不能为空");
        this.route = Objects.requireNonNull(route, "route不能为空");
    }

    @Override
    public String serviceName() {
        return StrUtil.isBlankIfStr(apiName) ? this.getClass().getSimpleName() : apiName;
    }
}
